package sohsite.util.generico;

import java.util.Collection;

import sohsite.excecao.EntradaInexistenteException;
import sohsite.excecao.ParametroInvalidoException;

public abstract class CadastroGenerico<Tipo> {
	private IRepositorioGenerico<Tipo> repositorio;
	
	public CadastroGenerico(IRepositorioGenerico<Tipo> repositorio) {
		this.repositorio = repositorio;
	}
	
	public void inserir(Tipo tipo) throws ParametroInvalidoException {
		if(tipo == null){
			throw new ParametroInvalidoException();
		}else{
			this.repositorio.inserir(tipo);
		}
	}
	
	public void atualizar(Tipo tipo) throws ParametroInvalidoException{
		if(tipo == null){
			throw new ParametroInvalidoException();
		}else{
			this.repositorio.atualizar(tipo);
		}
	}

	public Tipo consultar(int codigo) throws EntradaInexistenteException, ParametroInvalidoException {
		if(codigo < 0){
			throw new ParametroInvalidoException();
		}else{
			return this.repositorio.consultar(codigo);
		}
	}
	
	public void deletar(Tipo tipo) throws ParametroInvalidoException{
		if(tipo == null){
			throw new ParametroInvalidoException();
		}else{
			this.repositorio.deletar(tipo);
		}
	}
	
	public void deletar(int id) throws EntradaInexistenteException, ParametroInvalidoException{
		if(id < 0){
			throw new ParametroInvalidoException();
		}else{
			this.repositorio.deletar(id);
		}
	}

	public Collection<Tipo> consultarTodos(){		
		return this.repositorio.consultarTodos();
	}
}
